[3주차] 최유찬/[feat] 게시글 도메인 API 구현#101
Hidden character warning
[3주차] 최유찬/[feat] 게시글 도메인 API 구현#101ruchan04 wants to merge 2 commits intoLeets-Official:최유찬/mainfrom
Conversation
|
고생하셨습니다. |
LGH0507
left a comment
There was a problem hiding this comment.
onSuccess와 onFailure를 따로 분리해서 제네릭 구조로 BaseResponse로 관리하신 점과 전체적으로 게시글 CRUD 작성을 깔끔하게 잘 하신 것 같습니다! 고생 많으셨습니다!
|
|
||
| @Getter | ||
| @AllArgsConstructor | ||
| public class BaseResponse<T> { |
There was a problem hiding this comment.
공통 응답을 제네릭을 활용해 데이터 타입을 유연하게 관리할 수 있도록 설계하고 onSuccess와 onFailure와 같은 정적 팩토리 메서드를 작성해 가독성도 높인 점 잘하셨고 고생하셨습니다! 👍
| // [API 1] 목록 조회 | ||
| @GetMapping | ||
| public BaseResponse<List<PostResponseDto>> getPosts() { | ||
| return BaseResponse.onSuccess("2000", "게시글 목록 조회 성공", postService.findAll()); |
There was a problem hiding this comment.
추후에는 코드 확장성과 유지보수성 측면에서 좀 더 유리할 수 있도록 ErrorCode나 SuccessCode를 만들어 에러코드와 메시지를 한 번에 관리한다면 더 좋을 것 같습니다! 💊 아니면 혹시 저렇게("2000","게시글 목록 조회 성공") 으로 하드 코딩하신 이유가 따로 있으신 걸까요❓
There was a problem hiding this comment.
지적 감사합니다 현재 프로젝트 초기 단계라 빠르게 API 구조를 잡느라 미처 공통 코드로 분리하지 못했습니다.
| // 2. 상세 조회 로직 | ||
| public PostResponseDto getPostDetail(Long postId) { | ||
| Post post = postRepository.findById(postId) | ||
| .orElseThrow(() -> new NoSuchElementException("해당 게시글을 찾을 수 없습니다.")); |
There was a problem hiding this comment.
IllegalException 또는 GeneralException 대신 NoSuchElementException을 사용하신 의도가 따로 있으신건가요❓ 따로 사용해 본 적이 없어서 궁금해서 질문 드립니다!
There was a problem hiding this comment.
IllegalArgumentException은 인자 값 자체가 잘못되었을 때(예: ID가 음수일 때) 주로 사용된다고 생각했습니다. 반면, 인자는 정상적이지만 DB에 해당 데이터가 존재하지 않는 상황을 좀 더 명확하게 표현하고 싶어서 '요소가 없음'을 뜻하는 NoSuchElementException을 선택해 보았습니다
| // [API 3] 작성 | ||
| @PostMapping | ||
| public BaseResponse<PostResponseDto> createPost(@Valid @RequestBody PostRequestDto requestDto) { | ||
| return BaseResponse.onSuccess("2010", "게시글 생성 성공", postService.save(requestDto)); | ||
| } |
There was a problem hiding this comment.
팀 과제 내용 반영해서 응답 메시지 잘 구성하신 것 같습니다. 고생 많으셨습니다!
1. 과제 요구사항 중 구현한 내용
2. 핵심 변경 사항
데이터 구조 확장 (Schema Expansion)
단순 텍스트(content) 대신 리스트 형태의 blocks 구조를 도입하여 다양한 데이터를 담을 그릇을 만들었습니다.
응답 데이터 정밀화 (Data Curation)
닉네임(yuchan)과 생성 시간(createdAt)을 추가하여 데이터의 식별성과 분석 가치를 높였습니다.
품질 관리 체계화 (Quality Control)
4002(입력 오류), 4040(데이터 없음) 등 전용 에러 코드를 설계해 부적합한 데이터 유입을 차단했습니다.
3. 실행 및 검증 결과
게시물 등록 성공
게시물 등록 오류

게시물 조회

4. 완료 사항
5. 추가 사항
closed #97제출 체크리스트
{이름}/main브랜치다{이름}/{숫자}주차브랜치다Reviewer 참고